package com.guzhi02;

//选择排序是从所有数据中找到最大（小）的元素，然后放到数组的索引（从0开始）；与冒泡排序相比，看似相同，实则本质不同：冒泡的外层循环i是“已完成轮数”，而选择的外层循环j是“当前处理位置”。
//选择排序i和j表示的都是数组的索引

public class Select {
    //无参构造方法
        public Select() {
        }
    //成员方法
        //1.判断v是否大于w
        public static boolean greater(int v,int w){
            return v>w;
        }
        //2.交换数组中索引i和所有j的值
        public static void exch(int[]a,int i,int j){
            int temp=a[i];
            a[i]=a[j];
            a[j]=temp;
        }

        //3.选择排序
        public static void sort(int[]a){
                //外层循环i表示已排序元素数组的索引（也就是数组的索引，从0开始）
                for(int i=0;i<a.length;i++){
                    for (int j =i+1; j<a.length; j++) {//内层循环j表示未排序元素的索引（i+1）
                        if(greater(a[j],a[i])){
                            exch(a,j,i);
                        }
                    }
                }
        }
}
